Media content providers provide media content stored on a server to users via one or more computer networks. Generally, individual clients (e.g., subscribers or users) receive media content on client devices (i.e., the device used to display the media content to the user) from media content providers through network links to the source server and display the media content via a media player executing on the client device. The displaying of media content is referred to as playback.
The source server stores copies of the media content as a media file. To transmit the media file, the source server transmits the media file on the network according to the encoded bit rate of the media file. In other words, when source server transmits the media file to client devices, the source server consumes the necessary bandwidth on the network based on the encoded bit rate of the media file to transmit the media file to client devices.
The client devices connect with the network at an established maximum throughput rate. The maximum throughput rate refers the maximum bit rate at which the client devices download the media file from the network. The established maximum throughput rate is based to either underlying technology of the link between the client devices and the network or contracted service levels for the clients. Actual throughput is the throughput rate at which the network conveys the data from the content provider, e.g., source server, to the individual client. The actual throughput to the client may only be a fraction of the maximum throughput based on environmental conditions and competing network traffic.
Since the actual throughput may vary based on environmental conditions and competing network traffic, the rate at which a client's media player must consume (i.e., receive and play) media over a network connection (be it a constant rate or an average rate) to achieve uninterrupted playback may exceed the actual throughput rate of the link between the client device and the network. In other words, the bandwidth required to transmit the media file may exceed the actual throughput rate to the client device from the network. In these situations, the media player must pause to wait for more data from the media content provider to arrive before it can continue to playback the media content. This pause, often referred to as buffering or re-buffering can greatly diminish the enjoyment of media viewing. In other situations, the client device may have insufficient computing resources to decode and present the media content in “real-time.” In these situations, portions of the media content may be discarded, undecoded, or unplayed so that the media player may maintain proper playback of the received media content. The playback may also slow down to present all the data of the media content, but at a reduced rate. Either the dropping of data or the slowing of playback can reduce enjoyment, and if excessive, render the media content unwatchable.
To avoid buffering, dropping of data, or slowing of playback, media content providers may provide the clients with either the option of selecting an alternate media file encoded to consume less bandwidth or a default media file based on their particular network connection. The alternate media file contains similar content as the media file but is encoded to consume less bandwidth (e.g., encoded for a lower bit rate). However, during playback if the bandwidth necessary to transmit the selected media file exceeds the network throughput or the computing resources of the client device displaying the media content, the client has to explicitly begin playback of the media content encoded at a lower bandwidth which can cause startup delay associated with buffering and can require the user to start from the beginning of the media content. Needing to restart from the beginning every time the bandwidth necessary to transmit the selected media file exceeds the actual throughput or the computing resources of the device can drastically reduce the enjoyment of the media content.
In another technique to avoid buffering, dropping of data, or slowing of playback, the media player transmits playback status to the media content provider. The playback status can be the buffering time, the number of frames dropped, or the rate of playback. The media content provider dynamically varies the bit rate, e.g., dynamically varies the amount of needed bandwidth, of the media content to avoid buffering, dropping data, or slowing playback. However this technique has the negative consequence of requiring a separate content stream tailored for each recipient.